我正在尝试与linux x屏幕截图图像进行图像比较
我遵循python脚本
http://aatiis.me/2010/08/12/fast-image-comparison-with-python.html
它可以工作并为样本鸭图像提供输出(snap_from_x_duck
AND resized_from_duck
)我用于测试,但当我加载我的实际图像(snap_from_x.png
AND resized_from_org.png
)它给出了一个错误..
Comparing 1 images:
* 1 / 1: /opt/ad_re.png /opt/op.png ...
Traceback (most recent call last):
File "imgcmp.py", line 246, in <module>
sim = cmp.similarity()
File "imgcmp.py", line 212, in similarity
cmp = self.compare()
File "imgcmp.py", line 180, in compare
diff.append(cmp.levenshtein)
File "imgcmp.py", line 127, in levenshtein
stra_r = ''.join((chr(x>>16) for x in self.imga_int))
File "imgcmp.py", line 50, in imga_int
self._imga_int = tuple(self._img_int(self._imga))
File "imgcmp.py", line 120, in _img_int
yield …Run Code Online (Sandbox Code Playgroud) 我的目标是从扫描的名片图像中删除任何非文本区域,但我不知道使用OpenCV执行该操作的步骤,我已按照这些步骤但不知道这是正确的,或者我也不知道注意图像中的任何变化(非文本区域仍然存在)任何想法将非常有用,谢谢.
1)将图像转换为灰度
2)二进制图像
3)反转颜色(cv :: bitwise_not)以获得白色像素文本
4)侵蚀图像(cv :: erode)
5)使用canny检测边缘
6)使用霍夫变换检测文本行(尚未)
码:
cv::Mat greyMat = [self.imageView.image CVGrayscaleMat];
cv::Mat bwMat;
cv::threshold(greyMat, bwMat, 128, 255, CV_THRESH_BINARY);
cv::bitwise_not(bwMat, bwMat);
cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(2, 1));
cv::erode(bwMat, bwMat, element);
std::vector<cv::Point>points;
cv::Mat_<uchar>::iterator it=bwMat.begin<uchar>();
cv::Mat_<uchar>::iterator end=bwMat.end<uchar>();
for (; it!=end; ++it)
if (*it)
points.push_back(it.pos());
cv::RotatedRect box=cv::minAreaRect(cv::Mat(points));
plImage* smothedImage=new IplImage(bwMat);
cvSmooth(smothedImage, smothedImage);
cvCanny(smothedImage, smothedImage, 10, 100);
Run Code Online (Sandbox Code Playgroud) 我有一个问题,我无法弄清楚.我必须使用两个不同的图像处理技术:Skelethonization 和细化,我不得不这样做在Java中.现在的问题是我无法找到任何起点或教程.任何人都可以告诉我应该从哪里开始,或者有人可以解释我如何实现这一目标?我正在用Java编写应用程序BufferedImage,如果有可能的话,我想使用a (当然).
谢谢
我正在尝试按RGB值的顺序对图像的像素进行排序.作为Python的新手我试过这个:
from PIL import Image
source = Image.open("source.jpg")
colors = source.getcolors(source.size[0] * source.size[1]) #maxcolor value =256, get all colors with source.size[0] * source.size[1]
pixels = []
for i, color in colors:
pixels.extend(i * [color])
pixels.sort()
new = Image.new('RGB', source.size)
new.putdata(pixels)
new.save("new.png")
Run Code Online (Sandbox Code Playgroud)
它适用于40x40像素左右的小文件.但目标是在高达3000x2000分辨率的照片上使用它,我尝试运行它,但两小时后仍然没有尽头.代码可以优化,我做了一些完全错误的事情,还是Python根本不适合这种任务?
我想知道在matlab上更好的滤波器用于高斯噪声和斑点噪声我试图使用维纳滤波器来处理高斯,但它似乎不起作用.有人可以帮帮我吗?
我已经将图像从RGB转换为B/W然后我想将其转换回RGB但我有一个问题:
我的代码:
int width=zoomedImage->width;
int height=zoomedImage->height;
TempImage=cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,1);
cvCvtColor(zoomedImage, TempImage,CV_RGB2GRAY);
cvThreshold( TempImage, TempImage,128,256,CV_THRESH_BINARY);
cvCvtColor( TempImage,zoomedImage,CV_GRAY2RGB);
this->pictureBox1->Image=(gcnew
System::Drawing::Bitmap(zoomedImage->width,zoomedImage->height,zoomedImage->widthStep,
System::Drawing::Imaging::PixelFormat::Format24bppRgb,(System::IntPtr)zoomedImage->imageData));
Run Code Online (Sandbox Code Playgroud)
在这里我将zoomedImage显示为黑白图像,在另一个动作中,我想将zoomedImage显示为RGB图像,这里的主要问题是我无法更改将要绘制的图像,因为我的代码的另一部分依赖于在这个序列中,我在另一个动作中写道:
cvCvtColor( TempImage,zoomedImage,CV_GRAY2RGB);
this->pictureBox1->Image=(gcnew
System::Drawing::Bitmap(zoomedImage->width,zoomedImage->height,zoomedImage->widthStep,
System::Drawing::Imaging::PixelFormat::Format24bppRgb,(System::IntPtr)zoomedImage->imageData));
Run Code Online (Sandbox Code Playgroud)
但是zoomedImage仍然显示为B/W,我听说当真彩色图像转换为灰色时,它不能再作为真彩色图像返回,那么CV_GRAY2RGB做什么呢?
我正在为我的网站做一些工作,我想自动调整我的图像..但不仅自动调整大小,而且保持它们成比例,即使我调整其宽度或高度.我想添加额外的白色边框以补偿新的空间.
我以前从未做过任何形象工作,我应该怎么做呢?
在我的iOS项目中,我有一个RGB的CGImage,我想要二值化(转换为黑白).我想用OpenCV来做这件事,但我是OpenCV的新手.我找到了一本关于OpenCV的书,但它并不适用于iPhone.
如何在iOS上使用OpenCV对这样的图像进行二值化?
Hough Transform可以用于商业软件吗?
我的意思是,它是那些看起来只是研究而且不稳定的东西之一.例如,您不会将其放在商业合成软件中,并且让用户始终依赖它.
任何意见?
谢谢
假设给定的大小为64 * 64像素(M * N = 4096)的3位图像(L = 8)具有如下所示的强度分布。如何获得直方图均衡变换函数,然后计算图像的均衡直方图?
Rk nk
0 800
1 520
2 970
3 660
4 330
5 450
6 260
7 106
Run Code Online (Sandbox Code Playgroud)