照片反色处理 手机,什么软件可以把照片反色处理
前言在标记点识别的过程中,因为某些原因,预先对编码标记进行了反色处理,因此在原图二值化后是不能直接识别编码点的,因此需要在处理时再次进行反色处理,将编码标记恢复为正常的色值,从而实现识别,记录以下。
一、如何反色处理
单通道图像的色值在0-255之间,三通道图像的RGB色值均在0-255之间
以单通道图像为例,假设某点的色值为pv,且0=pv=255,故反色的实质为设定该点的色值为:255-PV;
三通道图像同理,取其RGB值均255减去其原值,故:
1.丙:
void SetSingleInverse(const cv:Mat src image,cv:Mat dst image){ Mat gray _ src;cvtColor(src,gray_src,CV _ bgr 2 gray);imshow(output ,gray _ src);int height=gray _ src . rows int width=gray _ src . cols for(int row=0;行高;row){ for(int col=0;列宽度;col){ int gray=gray _ src。atuchar(row,col);gray_src.atuchar(row,col)=255-gray;} } imshow(反色,gray _ src);} void setmultipreverse(const cv:Mat srcImage,cv:Mat dst image){ Mat dst;dst.create(src.size()、src。type());height=src . rows width=src . cols int NC=src。通道();//b,g,r三通道int b;int g;int r;for(int row=0;行高;row){ for(int col=0;列宽度;col ) { b=src.atVec3b(row,col)[0];g=src.atVec3b(row,col)[1];r=src.atVec3b(row,col)[2];dst.atVec3b(row,col)[0]=255-b;dst.atVec3b(row,col)[1]=255-g;dst.atVec3b(row,col)[2]=255-r;} }} 2.python
Inverse _ frame _ gray=frame _ gray。copy()height,width=Inverse _ frame _ gray。范围内I的形状(高度):范围内j的形状(宽度):PV=Inverse _ frame _ gray[I,j]Inverse _ frame _ gray[I][j]=255-pvcv 2。im show( Inverse ,Inverse_frame_gray)
注
:通过实际应用,以上代码效率极低,大大降低了图像的帧率,因此采用逻辑非
的方法,提高图像处理效率。二、逻辑非取反按位_非方法1.C
void SetSingleInverse(const cv:Mat src image,cv:Mat dst image){ Mat gray _ src;cvtColor(src,gray_src,CV _ bgr 2 gray);imshow(output ,gray _ src);mat Inverse _ dst bitwise _ not(gray _ src,Inverse _ dst);imshow(Inverse ,Inverse _ dst);} 2.python
gray=cv2.cvtColor(帧,cv2 .COLOR _ bgr 2灰色)cv2。im show( img _ gray ,gray)Inverse_frame_gray=cv2。bitwise _ not(灰色)cv2。即时消息显示(反转,反转_帧_灰色)经过测试,逻辑非取反方式可以大大提高取反效率,对于帧率几乎没有影响。
总结以上,实现基于开放计算机视觉对于图像的取反操作。
我曾踏月而来,只因你在山中。赫达克尔